package com.currency.service;

import com.currency.exception.AppException;
import com.currency.pojo.WytCurrencyTradeSerial;
import com.currency.request.*;
import com.currency.response.BaseResponse;
import com.currency.response.NormalResponse;
import com.currency.response.QueryCoinsListResponse;
import com.currency.response.QueryTradeResponse;

public interface PayService {

    String wxPay(String payId, int amount) throws Exception;

    String wxWithdrawal(String payId, String userId, Integer coins) throws AppException;

    String apPay(String payId, int amount) throws Exception;

    String apWithdrawal(String payId, String userId, Integer coins) throws AppException;

    QueryTradeResponse queryTrade(String tradeId, Integer flag) throws Exception;

    void cancelTrade(WytCurrencyTradeSerial tradeSerial) throws Exception;

    BaseResponse freezeUserCoins(FreezeCoinsRequest request) throws Exception;

    BaseResponse transUserCoins(TransUserCoinsRequest request) throws Exception;

    QueryCoinsListResponse coinsList(String userId, String month, String coinsType) throws Exception;

    BaseResponse prePay(PrePayRequest request) throws AppException;

    BaseResponse ensurePrePay(String id) throws AppException, Exception;

    NormalResponse addExtFee(AddExtFeeRequest request) throws AppException;
}
